//
//  StatusData.swift
//  WeiBo_NB
//
//  Created by apple on 15/3/7.
//  Copyright (c) 2015年 Ai. All rights reserved.
//

import UIKit
import SampleNetWorks

private  let WB_Home_Timeline_URL = "https://api.weibo.com/2/statuses/home_timeline.json"


class StatusData: NSObject,DictModelProtocol {
    ///  微博记录数组
    var statuses: [Status]?
    ///  微博总数
    var total_number: Int = 0
    ///  未读数量
    var has_unread: Int = 0
    
    static func customClassMapping() -> [String : String]? {
        return ["statuses":"\(Status.self)"]
    }



    ///   加载微博数据,字典转模型，以及错误处理，回调传回转换过的模型数据
  class  func loadStatus(completion:(data:StatusData?,error:NSError?)->()){
        let net = netWorkManager.sharedManager


        if let token = AccessToken.loadAccessToken()?.access_token{
            let params = ["access_token":token]
            
            // 请求网络数据
            net.requestJSON(.GET, WB_Home_Timeline_URL, params, completion: { (result, error) -> () in
                if error != nil{
                    completion(data: nil, error: error)
                    println(error)
                }
            
                // 字典转模型
                var modelTool = DictModelManager.sharedManager
                var data = modelTool.objectWithDictionary(result as! NSDictionary, cls: StatusData.self) as? StatusData
                
                // 如果有下载的图像，先下载图像
                if let urls = StatusData.picUrls(data?.statuses){
                    net.downloadImages(urls, completion: { (result, error) -> () in
                        // 回调视图控制器刷新数据
                        completion(data:data , error: nil)
                    })
                }else{
                    completion(data: data, error: nil)
                }
            })
            }
        }
    
    ///  取出微博中图片的URl
    ///
    ///  :param: status 微博数据
    ///
    ///  :returns: 图片的下载地址
    class func picUrls(statuses:[Status]?)->[String]?{
        if statuses == nil{
            
            return nil
        }else{
            var list = [String]()
            // 取出每一条微博
            for status in statuses! {
                // 取出微博中每一组图片
                if let urls = status.picURLS{
                    // 取出每一张缩略图，添加至数组
                    for pic in urls{
                        list.append(pic.thumbnail_pic!)
                    }
                }
            }
            if list.count > 0{
            // 返回装满缩略图的数组
                return list
            }else{
                return nil
            }
        }
    }
    
    
    
}


///  微博模型
class Status: NSObject,DictModelProtocol {
    ///  微博创建时间
    var created_at: String?
    ///  微博ID
    var id: Int = 0
    ///  微博信息内容
    var text: String?
    ///  微博来源
    var source: String?
    ///  转发数
    var reposts_count: Int = 0
    ///  评论数
    var comments_count: Int = 0
    ///  表态数
    var attitudes_count: Int = 0
    ///  配图数组
    var pic_urls: [StatusPictureURL]?
    
    /// 增加属性，方便转发微博进行判断
    // 如果有转发微博，就返回转发的图片，要没有，返回原来的图片
    var picURLS: [StatusPictureURL]?{
            if retweeted_status != nil{
                return retweeted_status!.pic_urls
            }else{
                return pic_urls
            }
    }
    
    /// 用户信息
    var user: Userinfo?
    /// 转发微博，如果有就是转发微博，如果没有就是原创微博
    var retweeted_status: Status?
    
     static func customClassMapping() -> [String : String]? {
        return ["user" : "\(Userinfo.self)",
                "retweeted_status" : "\(Status.self)",
                "pic_urls" : "\(StatusPictureURL.self)"]

    }

}


///  微博配图模型
class StatusPictureURL: NSObject {
    ///  缩略图 URL
    var thumbnail_pic: String?
}
